package com.tool.weixin.api;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.slf4j.Logger;

import com.tool.weixin.util.HttpUtils;

/**
 * 数据分析
 * @author huff
 *
 */
public class DataCubeApi {
	
	private static final Logger logger = org.slf4j.LoggerFactory.getLogger(DataCubeApi.class);
	
	/**获取用户增减数据（getusersummary） **/
	private static final String get_user_summary = "https://api.weixin.qq.com/datacube/getusersummary?access_token=ACCESS_TOKEN";
	
	/**获取累计用户数据（getusercumulate） **/
	private static final String get_user_cumulate = "https://api.weixin.qq.com/datacube/getusercumulate?access_token=ACCESS_TOKEN";
	
	/**
	 * 获取用户增减数据,最大跨度7天
	 * @param begin 起始日期
	 * @param end 允许设置的最大值为昨日
	 * @return
	 * 		"ref_date": "2014-12-07",数据的日期 
	 * 		"user_source": 0,  	用户的渠道
	 *  	"new_user": 0, 	新增的用户数量 
	 *  	"cancel_user": 0取消关注的用户数量
	 */
	public static List<Map<String, Object>> getUserSummary(String begin,String end) {
		String requestUrl = get_user_summary.replace("ACCESS_TOKEN", AccessTokenApi.getAccessToken().getToken());
        String json = "{\"begin_date\": \""+begin+"\", \"end_date\": \""+end+"\"}";
		JSONObject jsonObject = HttpUtils.httpRequest(requestUrl, "GET", json);
        List<Map<String, Object>> result = null;
        if (null != jsonObject) {
            try {
            	JSONArray jsonArray = jsonObject.getJSONArray("list");
            	result = new ArrayList<Map<String, Object>>(jsonArray.size());
            	for (Object object : jsonArray) {
            		result.add((Map<String, Object>) object);
				}
            } catch (Exception e) {
                logger.error("获取用户增减数据失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
            }
        }
        return result;
	}
	
	/**
	 * 获取累计用户数据,最大跨度7天
	 * @param begin 起始日期
	 * @param end 允许设置的最大值为昨日
	 * @return
	 * 		"ref_date": "2014-12-07",  	数据的日期
            "cumulate_user": 1217056	总用户量
	 */
	public static List<Map<String, Object>> getUserCumulate(String begin,String end) {
		String requestUrl = get_user_cumulate.replace("ACCESS_TOKEN", AccessTokenApi.getAccessToken().getToken());
        String json = "{\"begin_date\": \""+begin+"\", \"end_date\": \""+end+"\"}";
		JSONObject jsonObject = HttpUtils.httpRequest(requestUrl, "GET", json);
        List<Map<String, Object>> result = null;
        if (null != jsonObject) {
            try {
            	JSONArray jsonArray = jsonObject.getJSONArray("list");
            	result = new ArrayList<Map<String, Object>>(jsonArray.size());
            	for (Object object : jsonArray) {
            		result.add((Map<String, Object>) object);
				}
            } catch (Exception e) {
                logger.error("获取累计用户数据失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
            }
        }
        return result;
	}
}
